<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>常用对象</title>
    <script src="js/my.js"></script>
    <script>
        //1. 字符串处理
        function test01(){
            //1.1 返回字符串长度
            let str = "hello,world"
            console.log("1. 字符串长度:",str.length)
            //1.2 返回指定位置的字符
            console.log("2. 返回指定位置的字符:",str.charAt(1))
            //1.3 返回指定字符的第一次出现的位置
            console.log("3. 返回指定字符的第一次出现的位置:",str.indexOf('o'))
            //1.4 返回某字符最后一次出现的位置
            console.log("4. 返回指定字符的最后一次出现的位置:",str.lastIndexOf('o'))
            //1.5 将字符串转换为大写
            console.log("5. 返回指定字符串的大写形式:",str.toUpperCase())
            //1.6 将字符串转换为小写
            console.log("6. 返回指定字符串的小写形式:",str.toLowerCase())
            //1.7 以指定字符串开头或指定字符串结尾的字符
            console.log("7. 是否以指定字符串开头:",str.startsWith("hell"))
            console.log("8. 是否以指定字符串结尾:",str.endsWith("aaa"))
            //1.8 是否包含指定字符
            console.log("9. 是否包含指定字符:",str.includes("llo"))
            //1.9 拆分指定字符串
            console.log("10. 拆分指定字符串:",str.split(","));
            //1.10 替换字符串,参数1：代表正则表达式，其中的/g: 是global代表全局替换
            console.log("11. 替换指定字符串：",str.replace(/o/g,"O"))
            //1.11 截取字符串
            console.log("12. 截取字符串(使用substring()函数截取)：",str.substring(0,5))
            console.log("13. 截取字符串(使用substr()函数截取)：",str.substr(6,5))   // 参数1：开始截取位置 参数2：截取的长度
        }
        //2. 数学函数
        function test02(){
            console.log("[1]. 返回一个数的绝对值：",Math.abs(-10))
            console.log("[2]. 返回圆周率的值：",Math.PI)
            console.log("[3]. 返回一个数的n次幂：",Math.pow(2,3))
            console.log("[4]. 返回[0,1)之间的随机数：",Math.random())
            console.log("[5]. 返回一个比指定数大的最小整数：",Math.ceil(3.45))
            console.log("[6]. 返回一个比指定数小的最大整数：",Math.floor(3.45))
            console.log("[7]. 返回一个数的四舍五入(加0.5取整)：",Math.round(3.55))
            console.log("[8]. 返回一个数最大值与最小值：",Math.max(3,1),Math.min(1,3))
            console.log("[9]. 返回一个数平方根：",Math.sqrt(3))
            console.log("[10]. 返回一个弧度的正弦值：",Math.sin(Math.PI/3))
        }
        //3. 数组函数
        function test03(){
            //3.1 定义一个数组
            let arr = [33,11,55,22]
            //let arr = new Array(3)          // 如果只指定一个值，代表的是数组的长度
            //3.2 向数组中添加元素，添加到数组的最后
            arr.push(111)
            //3.3 也可以添加到数组的前面
            arr.unshift(100)
            //3.4 利用数组的长度增长来添加
            arr[arr.length] = 101
            //3.5 从数组中移除元素
            //3.5.1 移队最前面元素
            arr.shift()
            //3.5.2 删除数组中某一段
            arr.splice(4,1)         // 参数1：代表从哪个位置开始删除 参数2：代表删除的个数,参数3以后都是向数组中添加元素
            //3.6 截取数组的一段，返回的是一个新数组
            let newArr = arr.slice(0,3)       // 参数1：开始截取的位置，参数2：截取的个数
            console.log("newArr:",newArr)
            //3.7 对数组排序
            //注意：回调函数的返回值：
            //大于0： 降序
            //小于0： 升序
            //arr.sort()                       // 默认按照自然顺序排序，可以排一些字符串的顺序，对数字的大小排序就有点力不从心
            // arr.sort(function (a,b) {
            //     return b - a;                // 正数：降序
            // })
            //改成箭头函数：
            arr.sort( (a,b) =>{
                return a - b;                   // 负数：升序
            })
            //3.8 遍历数组：
            //3.8.1 方法一：forEach() 函数
            arr.forEach(a => {
                console.log(a)
            })
            console.log("----------------------------")
            //3.8.2 方法二：使用for...in
            for (const key in arr) {
                console.log(key , "--->" ,arr[key])
            }
            console.log("----------------------------")
            //3.8.3 方法三：使用普通for循环
            for (let i = 0; i < arr.length;i++){
                console.log(arr[i])
            }
        }
        //4. 日期函数
        function test04(){
            //4.1 定义一个日期对象
            let dt = new Date();
            //4.2 得到日期的各个部分
            const year = dt.getFullYear();      // 年份
            const month = dt.getMonth();        // 月份
            const date = dt.getDate();           // 天数
            const day = dt.getDay();             // 一个星期中某一天,星期天：0，星期一：1..。
            const hour = dt.getHours();         // 小时数
            const minute = dt.getMinutes();     // 分钟数
            const second = dt.getSeconds();     // 秒数
            //4.3 组织数据
            let info = year + "年" + (month + 1) + "月" + date + "日 " + hour + ":" + minute + ":" + second
            //4.4 定义星期数
            let weeks = ["星期天","星期一","星期二","星期三","星期四","星期五","星期六"]
            let weekName = " " + weeks[day]
            info += weekName
            //4.5 将上面的日期信息放到d1层中
            // document.querySelector("#d1").innerHTML = info
            //或者使用自定义函数库完成
            HZ.S("#d1").innerHTML = info
            //4.6 利用setTimeout（）函数，让时间每隔一秒自动显示
            // 参数1：调用的函数代码
            // 参数2：间隔时间，以ms为单位
            setTimeout(()=>{
                test04()
            },1000)
        }
        // test01()
        // test02()
        // test03()
        // onload：代表页面所有元素都加载完成后，才会执行其中的代码
        window.onload = function(){
            test04()
        }

    </script>
</head>
<body>
    <div id="d1"></div>
</body>
</html>
